
package main.old.new_2023.last.month_8;


import java.util.*;

/**
 * @Description: todo 1732. 找到最高海拔
 * 有一个自行车手打算进行一场公路骑行，这条路线总共由 n + 1 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。
 * 给你一个长度为 n 的整数数组 gain ，其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差（0 <= i < n）。请你返回 最高点的海拔 。
 *
 * todo 2215. 找出两数组的不同
 * 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ，请你返回一个长度为 2 的列表 answer ，其中：
 * answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。
 * answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组成的列表。
 *
 * todo 2390. 从字符串中移除星号
 * 给你一个包含若干星号 * 的字符串 s 。
 * 在一步操作中，你可以：
 * 选中 s 中的一个星号。
 * 移除星号 左侧 最近的那个 非星号 字符，并移除该星号自身。
 * 返回移除 所有 星号之后的字符串。
 *
 * 注意：
 * 生成的输入保证总是可以执行题面中描述的操作。
 * 可以证明结果字符串是唯一的。
 *
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2023/6/
 * @Param:
 * @return:
 **/
public class Solution0817 {

    //从字符串中移除星号
    public String removeStars(String s) {
        Stack<Character> stack = new Stack<>();
        for (char temp:s.toCharArray()){
            if ('*' == temp && !stack.isEmpty()){
                stack.pop();
            }else {
                stack.push(temp);
            }
        }
        char[] chars = new char[stack.size()];
        for (int i = chars.length-1;i>=0;i--){
            chars[i] = stack.pop();
        }
        return new String(chars);

    }

    //找出两数组的不同
    public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
        Set<Integer> set1 = new HashSet<>();
        for (int temp:nums1){
            set1.add(temp);
        }
        Set<Integer> set2 = new HashSet<>();
        for (int temp:nums2){
            set2.add(temp);
        }
        List<Integer> list1 = new ArrayList<>();
        for (Integer temp:set1){
            if (!set2.contains(temp)){
                list1.add(temp);
            }
        }
        List<Integer> list2 = new ArrayList<>();
        for (Integer temp:set2){
            if (!set1.contains(temp)){
                list2.add(temp);
            }
        }
        return Arrays.asList(list1,list2);
    }

    //找到最高海拔
    public int largestAltitude(int[] gain) {
        int result = 0;
        int count = 0;
        for (int i:gain){
            count += i;
            result = Math.max(result,count);
        }
        return result;
    }

}
